import json
import os
class Contact:
    # 初始化通讯录
    def __init__(self):
        file_path = 'contact.json'
        if os.path.exists(file_path) and os.path.getsize(file_path) != 0:
            with open('contact.json', 'r', encoding='utf8') as file:
                contact = json.load(file)
                self.__list = contact
        else:
            self.__list = []
        print('初始化成功')

    # 保存通讯录信息
    def __saveContact(self):
        file_path = 'contact.json'
        with open(file_path, 'w', encoding='utf8') as file:
            json.dump(self.__list, file, ensure_ascii=False, indent=4)
        print('保存成功')

    # 添加联系人
    def create_contact(self):
        print('添加联系人操作')
        name = input('请输入姓名：')
        phone = input('请输入电话：')
        qq = input('请输入Q Q：')
        email = input('请输入邮箱：')
        if name == '' or phone == '' or qq == '' or email == '':
            print('输入格式有误，添加失败')
        else:
            if not self.is_exists(name):
                person = {'name':name,'phone':phone,'qq':qq,'email':email}
                self.__list.append(person)
                print('添加成功')
                self.__saveContact()
            else:
                print('此人已存在，添加失败')

    # 判断是否存在
    def is_exists(self,name):
        for person in self.__list:
            if person['name'] == name:
                return 1
        return 0

    # 查询联系人
    def query_contact(self):
        print('查询联系人操作')
        name = input('请输入您要查询人的姓名：')
        for person in self.__list:
            if person['name'] == name:
                print(person)
                print('查询成功')
                return 1
        print('查无此人，删除失败')
        return 0

    # 显示所有人
    def show_all(self):
        print('您的联系人列表：')
        if not self.__list == []:
            for person in self.__list:
                print(person)
        else:
            print('您的联系人列表为空')

    # 删除联系人
    def delete_contact(self):
        print('删除联系人操作')
        name = input('请输入您要删除人的姓名：')
        for person in self.__list:
            if person['name'] == name:
                self.__list.remove(person)
                print('删除成功')
                self.__saveContact()
                return 1
        print('查无此人，删除失败')
        return 0

def menu():
    print('-' * 20)
    print('欢迎来到通讯录系统！')
    print('1、创建联系人')
    print('2、查询联系人')
    print('3、显示所有人')
    print('4、删除联系人')
    print('0、退出通讯录')
    print('-' * 20)

def start(choice):
    # 1、创建联系人
    if choice == '1':
        contact.create_contact()
    # 2、查询联系人
    elif choice == '2':
        contact.query_contact()
    # 3、显示联系人
    elif choice == '3':
        contact.show_all()
    # 4、删除联系人
    elif choice == '4':
        contact.delete_contact()
    # 0、退出通讯录
    elif choice == '0':
        print('退出通讯录系统！')
        exit()
    else:
        print('输入有误，请重新输入')

contact = Contact()
while 1:
    menu()
    choice = input('请选择您要执行的操作：')
    start(choice)